/**
 * 簡單表格
 * 
 * 支持复杂格式的表格
 * setHeader和addRow的参数内容相同，是一个列表
 * 列表的每一个元素可以是字符串、null或者对象
 * 生成复杂表格时，必须带有text, colspan, rowspan三个成员
 * 来指定表格内容和定表格的colspan和rowspan属性
 */

function SimpleTable(table_id=null, father_id) {
    this.father_id = father_id;
    this.header = null;
    this.rows = [];
    this.id = table_id;
    this.column_count = 0;

    /**
     * 清空表格的所有数据
     * 没有返回值
     */
    this.clear = function() {
        this.header = null;
        this.rows = [];
        this.column_count = 0;
        document.getElementById(this.father_id).innerHTML = '';
    }
    
    // 设置表头
    this.setHeader = function(header) {
        this.column_count = header.length;
        this.header = header;
    }

    
    /**
     * 添加一行内容
     * @param {*} row       一行中的每一个单元格的数据
     * @param {*} row_id    行id
     */
    this.addRow = function(row, row_id='') {
        this.rows.push([row_id, row]);
    }

    this.show = function() {
        table = document.createElement('table');
        if(this.id != null) {
            table.id = this.id;
        }
        table.border = 1;
        // 設置表頭
        if(this.header != null) {
            table_row = document.createElement('tr');
            this.header.forEach(function(cell_content) {
                if(cell_content == null) {
                    return;
                }
                var cell = createCell('th', cell_content);
                table_row.appendChild(cell);
            });
            table.appendChild(table_row);
        }
        // 添加內容
        this.rows.forEach(function(row){
            row_id = row[0];
            row_cells = row[1];
            table_row = document.createElement('tr');
            if(row_id != '') {
                table_row.id = row_id;
            }
            row_cells.forEach(function(cell_content){
                if(cell_content == null) {
                    return;
                }
                var cell = createCell('td', cell_content);
                table_row.appendChild(cell);
            });
            table.appendChild(table_row);
        });
        father_element = document.getElementById(this.father_id);
        father_element.innerHTML = '';
        father_element.appendChild(table);
    }

    /**
     * （暂时不用了=。=!!!）
     * 根据row_id获取一行表格中的数据
     * 需要获取数据的单元格需要在创建时先指定class
     * 并且增加data-key, data-value这两个属性表示该单元格数据的名称和值
     * （单元格数据的展示样式和原数据可能不一致）
     * 返回一个字典{data-key:data-value}
     * @param {*} row_id        行id
     * @param {*} class_name    要获取的数据所属的class名称
     */
    this.getDataFromTableRow = function(row_id, class_name) {

    }
}


// 生成附表格的一個單元格
function createCell(mark_name, cell_content) {
    var cell = document.createElement(mark_name);
    // 复杂格式的表格
    if(typeof(cell_content) == 'object') {
        cell.innerHTML = cell_content.text;
        delete cell_content.text;
        for(let attr in cell_content) {
            cell.setAttribute(attr, cell_content[attr]);
        }
    }
    // 简单表格
    else {
        cell.innerHTML = cell_content;
    }
    return cell;
}
